package vistas;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.table.AbstractTableModel;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
@SuppressWarnings("serial")
public class FrmEquipos extends javax.swing.JFrame {

	private JPanel panelNuevoEquipo;
	private JPanel panelTablaEquipos;
	private JScrollPane scrollTablaEquipos;
	private JScrollPane scrollTablaJugadores;
	private JTable tablaEquipos;
	private JTable tablaJugadores;
	private JLabel lblTablaJugadores;
	private JLabel lblTablaEquipos;
	private JLabel lblNuevoEquipo;
	private JLabel lblNombre;
	private JLabel lblAnoFundacion;
	private JLabel lblCiudad;
	private JLabel lblEstadio;
	private JTextField txtNombre;
	private JTextField txtAnoFundacion;
	private JTextField txtCiudad;
	private JTextField txtEstadio;
	private JButton btnCargarJugadores;
	private JButton btnRegistrar;
	private JButton btnVolver;
	
	/**
	* Auto-generated main method to display this JFrame
	*/
		
	public FrmEquipos() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				panelTablaEquipos = new JPanel();
				getContentPane().add(panelTablaEquipos, BorderLayout.CENTER);
				panelTablaEquipos.setBounds(20, 30, 320, 320);
				panelTablaEquipos.setLayout(null);				
				panelTablaEquipos.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
				{
					lblTablaEquipos = new JLabel();
					panelTablaEquipos.add(lblTablaEquipos);
					lblTablaEquipos.setText("Listado de Equipos");
					lblTablaEquipos.setBounds(10, 15, 300, 20);
					lblTablaEquipos.setFont(new java.awt.Font("Dialog",1,18));
					lblTablaEquipos.setHorizontalAlignment(SwingConstants.CENTER);
				}
				{
					scrollTablaEquipos = new JScrollPane();
					panelTablaEquipos.add(scrollTablaEquipos);
					scrollTablaEquipos.setBounds(10, 45, 300, 265);
					{
						tablaEquipos = new JTable();
						scrollTablaEquipos.setViewportView(tablaEquipos);
					}
				}
			}
			{
				panelNuevoEquipo = new JPanel();
				getContentPane().add(panelNuevoEquipo);
				panelNuevoEquipo.setBounds(360, 30, 310, 320);
				panelNuevoEquipo.setLayout(null);				
				panelNuevoEquipo.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
				{
					lblNuevoEquipo = new JLabel();
					panelNuevoEquipo.add(lblNuevoEquipo);
					lblNuevoEquipo.setText("Nuevo Equipo");
					lblNuevoEquipo.setBounds(15, 15, 290, 20);
					lblNuevoEquipo.setFont(new java.awt.Font("Dialog",1,18));
					lblNuevoEquipo.setHorizontalAlignment(SwingConstants.CENTER);
				}
				{
					lblNombre = new JLabel();
					panelNuevoEquipo.add(lblNombre);
					lblNombre.setText("Nombre:");
					lblNombre.setBounds(15, 45, 135, 20);
				}
				{
					txtNombre = new JTextField();
					panelNuevoEquipo.add(txtNombre);
					txtNombre.setBounds(15, 65, 135, 20);
					txtNombre.addKeyListener(listenerKeyValidar());
				}
				{
					lblAnoFundacion = new JLabel();
					panelNuevoEquipo.add(lblAnoFundacion);
					lblAnoFundacion.setText("Año de Fundación:");
					lblAnoFundacion.setBounds(160, 45, 135, 20);
				}
				{
					txtAnoFundacion = new JTextField();
					panelNuevoEquipo.add(txtAnoFundacion);
					txtAnoFundacion.setBounds(160, 65, 135, 20);
					txtAnoFundacion.addKeyListener(listenerKeyValidar());
				}
				{
					lblCiudad = new JLabel();
					panelNuevoEquipo.add(lblCiudad);
					lblCiudad.setText("Ciudad:");
					lblCiudad.setBounds(15, 90, 135, 20);
				}
				{
					txtCiudad = new JTextField();
					panelNuevoEquipo.add(txtCiudad);
					txtCiudad.setBounds(15, 110, 135, 20);
					txtCiudad.addKeyListener(listenerKeyValidar());
				}
				{
					lblEstadio = new JLabel();
					panelNuevoEquipo.add(lblEstadio);
					lblEstadio.setText("Estadio:");
					lblEstadio.setBounds(160, 90, 135, 20);
				}
				{
					txtEstadio = new JTextField();
					panelNuevoEquipo.add(txtEstadio);
					txtEstadio.setBounds(160, 110, 135, 20);
					txtEstadio.addKeyListener(listenerKeyValidar());
				}
				{
					btnCargarJugadores = new JButton();
					panelNuevoEquipo.add(btnCargarJugadores);
					btnCargarJugadores.setText("Cargar Jugadores");
					btnCargarJugadores.setBounds(15, 145, 280, 30);
					btnCargarJugadores.addActionListener(listenerActionValidar());
				}		
				{
					lblTablaJugadores = new JLabel();
					panelNuevoEquipo.add(lblTablaJugadores);
					lblTablaJugadores.setText("Listado de Equipos");
					lblTablaJugadores.setBounds(15, 185, 280, 20);
					lblTablaJugadores.setFont(new java.awt.Font("Dialog",1,14));
					lblTablaJugadores.setHorizontalAlignment(SwingConstants.CENTER);
				}
				{
					scrollTablaJugadores = new JScrollPane();
					panelNuevoEquipo.add(scrollTablaJugadores);
					scrollTablaJugadores.setBounds(15, 205, 280, 100);
					{
						tablaJugadores = new JTable();
						scrollTablaJugadores.setViewportView(tablaJugadores);
					}
				}
				
				
			}
			{
				btnVolver = new JButton();
				getContentPane().add(btnVolver);
				btnVolver.setText("Volver");
				btnVolver.setBounds(70, 380, 160, 50);
			}		
			{
				btnRegistrar = new JButton();
				getContentPane().add(btnRegistrar);
				btnRegistrar.setText("Registrar");
				btnRegistrar.setEnabled(false);
				btnRegistrar.setBounds(470, 380, 160, 50);
			}
			pack();
			setSize(700, 500);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public JTextField getTxtNombre() {
		return txtNombre;
	}

	public JTextField getTxtAnoFundacion() {
		return txtAnoFundacion;
	}

	public JTextField getTxtCiudad() {
		return txtCiudad;
	}

	public JTextField getTxtEstadio() {
		return txtEstadio;
	}
	
	public JButton getBtnCargarJugadores() {
		return btnCargarJugadores;
	}

	public void setBtnCargarJugadores(JButton btnCargarJugadores) {
		this.btnCargarJugadores = btnCargarJugadores;
	}

	public void agregarListener(ActionListener accion){
		btnCargarJugadores.addActionListener(accion);		
		btnRegistrar.addActionListener(accion);
		btnVolver.addActionListener(accion);
	}
	
	public void setListadoEquipos(AbstractTableModel abstractTableModel){
		tablaEquipos.setModel(abstractTableModel);
	}
	
	public void setListadoJugadores(AbstractTableModel abstractTableModel){
		tablaJugadores.setModel(abstractTableModel);
	}
	
	public void mostrarMensaje(String mensaje){
		JOptionPane.showMessageDialog(this, mensaje);
	}
	
	public KeyListener listenerKeyValidar(){
		return new KeyListener() {
			@Override
			public void keyTyped(KeyEvent e) {
				validarCampos();
			}
			@Override
			public void keyReleased(KeyEvent e) {
				validarCampos();
			}
			@Override
			public void keyPressed(KeyEvent e) {
				validarCampos();
			}
		};
	}
	
	public ActionListener listenerActionValidar(){
		return new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				validarCampos();
			}
		};
	}
	
	public void validarCampos(){
		if (txtNombre.getText().isEmpty() || txtCiudad.getText().isEmpty() ||
				txtAnoFundacion.getText().isEmpty() || txtEstadio.getText().isEmpty() ||
				btnCargarJugadores.isEnabled())
			btnRegistrar.setEnabled(false);
		else
			btnRegistrar.setEnabled(true);			
	}
	
	public void limpiar(){
		this.txtNombre.setText("");
		this.txtAnoFundacion.setText("");
		this.txtCiudad.setText("");
		this.txtEstadio.setText("");
		this.btnRegistrar.setEnabled(false);
		this.btnCargarJugadores.setEnabled(true);
	}
	
}
